package Action;

import Forms.UsuarioForm;
import beans.Nodo;
import beans.Usuario;
import hibernate.NodoBD;
import hibernate.UsuarioBD;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Session;

/**
 *
 * @author Antonio
 */
public class NuevoUsuarioInvitadoAction extends Action {

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception 
    {
        Calendar calendario;
        Integer dia,mes,anyo;        
        
        
        
        //Recuperamos el idUsuario y el correo del nuevo usuario invitado
        String idNodo = (String)req.getSession().getAttribute("id");
        String correoUsuario = (String)req.getSession().getAttribute("correo");
        long idNodoL = Long.valueOf(idNodo);
        
        //Recuperamos el form y el usuario
        UsuarioForm usuarioForm = (UsuarioForm)form;
        Usuario usuario = usuarioForm.getUsuario();
        
        //Recuperamos el nodo por su id 
        Nodo nodo = new Nodo();
        NodoBD nodoBd = new NodoBD(nodo);
        nodo = nodoBd.devuelveNodo(idNodoL);
       
       UsuarioBD usuarioBd = new UsuarioBD(usuario);
        
        //Comprobamos que no exista ya un usuario con su nombre de usuario
        //Si existe fallo y vuelve a la página
        if(usuarioBd.existeUsuario())
        {            
            req.setAttribute("bandera", true);
            return mapping.findForward("fallo");
        }
        else //si no, añadimos el usuario
        {       
            
            req.setAttribute("bandera", false);
            dia = new Integer(usuario.getDiaFecha());
            mes = new Integer(usuario.getMesFecha());
            anyo = new Integer(usuario.getAnyoFecha());
            calendario = new GregorianCalendar(anyo, mes, dia);
            usuario.setFechaNacimiento(calendario);
            //Refrescamos los atributos del usuario
            usuario.setCorreo(correoUsuario);
            usuario.setNodo(nodo);
            
            
            
            usuarioBd.setUsuario(usuario);
            usuarioBd.anadir();
            usuario = usuarioBd.recuperaUsuario();
            //Actualizamos el nodo 
            nodoBd.actualizaNodo(usuario, nodo);
            //Recuperamos el nodo
            nodo = nodoBd.devuelveNodo(nodo.getIdNodo());
            req.getSession().setAttribute("usuarioActual", usuario);
            req.getSession().setAttribute("nodoActual",nodo);
            usuario.getAnyoFecha();
            return mapping.findForward("ok");
        }
     }

    
}

